//package com.waibao.im.hx.service;
//
//import com.lianqu.huanxin.core.model.*;
//import com.lianqu.huanxin.core.service.TalkDataService;
//import com.lianqu.huanxin.core.service.impl.TalkDataServiceImpl;
//import com.lianqu.huanxin.core.service.impl.TalkHttpServiceImplApache;
//
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * 环信工具类
// *
// * @author huangshanghua
// * @date 2017-11-1 上午11:15:06
// */
//public class HuanXinUtil {
//
//	private static TalkDataService service = null;
//
//	/**
//	 * 初始化
//	 */
//	private static void init(){
//		if(service == null){
//
//			// 初始服务端Token
//			Authentic.Token token = new Authentic(new TalkHttpServiceImplApache()).getToken();
//
//			Authentic.Token TEST_TOKEN = new Authentic.Token(token.getToken(),token.getExpire());
//
//			service = new TalkDataServiceImpl(new TalkHttpServiceImplApache());
//
//			// 修改数据业务Token
//			service.setToken(TEST_TOKEN);
//		}
//	}
//
//
//	/**
//	 * 退出环信平台
//	 *
//	 * @param username
//	 *            注册账户
//	 * */
//	public static boolean logout(String userName) {
//		try {
//			init();
//			TalkNode talkNode = service.logout(userName);
//			if(talkNode.getStatusCode()==200){
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 启用禁用账户
//	 *
//	 * @param username 注册账户
//	 * @param access true/false
//	 *
//	 * */
//	public static boolean userModifyAccess(String userName, Boolean access){
//		try {
//			init();
//			TalkNode talkNode = service.userModifyAccess(userName,access);
//			if(talkNode.getStatusCode()==200){
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//
//	/**
//	 * 增加用户
//	 *
//	 * @param msg 消息
//	 * @param formUserId 发出消息用户ID
//	 * @param formUserNickname 发出消息用户名称
//	 * @param formUserAvatar 发出消息用户头像
//	 * @param userName 新增用户名（唯一标识，相当为ID）
//	 * @param password 新增用户密码
//	 * @param nickName 新增用户别名（环信用来对外显示）
//	 * @return
//	 */
//	public static boolean addUser(String msg,String formUserId, String formUserNickname, String formUserAvatar,String userName, String password, String nickName){
//		try {
//			init();
//			TalkNode talkNode = service.userSave(userName, password,nickName);
//			if(talkNode.getStatusCode()==200){
//				sendTextMsgToUser(msg, formUserId, formUserNickname, formUserAvatar, new String[]{nickName});
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 删除用户
//	 *
//	 * @param username 用户名（唯一标识，相当为ID）
//	 * @return
//	 */
//	public static boolean deleteUser(String username){
//		try {
//			init();
//			TalkNode talkNode = service.userDrop(username);
//			if(talkNode.getStatusCode()==200){
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 登录
//	 *
//	 * @param username 用户名（唯一标识，相当为ID）
//	 * @param password 密码
//	 * @return
//	 */
//	public static boolean login(String username, String password){
//		try {
//			init();
//			TalkNode talkNode = service.login(username,password);
//			if(talkNode.getStatusCode()==200){
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 修改用户密码
//	 * @param username 注册账户
//	 * @param password 登录密码
//	 * */
//	public static boolean userModifyPassword(String username, String password){
//		try {
//			init();
//			TalkNode talkNode = service.userModifyPassword(username,password);
//			if(talkNode.getStatusCode()==200){
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 修改用户昵称
//	 * @param username 注册账户
//	 * @param nickname 用户昵称
//	 * */
//	public static boolean userModifyNickname(String username, String nickname){
//		try {
//			init();
//			TalkNode talkNode = service.userModifyNickname(username,nickname);
//			if(talkNode.getStatusCode()==200){
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 更新用户信息
//	 *
//	 * @param formUserId 发出消息用户ID
//	 * @param formUserNickname 发出消息用户名称
//	 * @param formUserAvatar 发出消息用户头像
//	 * @param userName 更新用户名（唯一标识，相当为ID）
//	 * @param password 更新用户密码
//	 * @param nickName 更新用户别名（环信用来对外显示）
//	 * @return
//	 */
//	public static boolean updateUser(String formUserId, String formUserNickname, String formUserAvatar ,String userName, String password, String nickName){
//		try {
//			init();
//			TalkNode talkNode = service.userGet(userName);
//			if(talkNode.getStatusCode()==200){
//				List<TalkUser> talkUsers = talkNode.getEntities();
//				if(talkUsers!= null && !talkUsers.isEmpty()){
//					TalkUser talkUser = talkUsers.get(0);
//					if(!nickName.equals(talkUser.getNickname())){
//						userModifyNickname(userName, nickName);
//					}
//				}else{
//					talkNode = service.userSave(userName, password,nickName);
//					if(talkNode.getStatusCode()==200){
//						return true;
//					}
//				}
//			}else if(talkNode.getStatusCode()==404){
//				talkNode = service.userSave(userName, password,nickName);
//				if(talkNode.getStatusCode()==200){
//					return true;
//				}
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 验证用户是否存在
//	 *
//	 * @param username 用户名（唯一标识，相当为ID）
//	 * @return
//	 */
//	public static boolean existByUserName(String username){
//		try {
//			init();
//			TalkNode talkNode = service.userGet(username);
//			if(talkNode.getStatusCode()==200){
//				List<TalkUser> talkUsers = talkNode.getEntities();
//				if(talkUsers!= null && !talkUsers.isEmpty()){
//					return true;
//				}else{
//					return false;
//				}
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 向用户发送文本信息
//	 *
//	 * @param msg 文本消息
//	 * @param fromUserId 发出用户ID
//	 * @param fromUserNickname 发出用户名称
//	 * @param fromUserAvatar 发出用户头像
//	 * @param toUserId 接收发出用户ID
//	 * @return
//	 */
//	public static boolean sendTextMsgToUser(String msg, String fromUserId, String fromUserNickname, String fromUserAvatar, String... toUserId){
//		try {
//			init();
//			TalkMsg talkMsg = new TalkMsg();
//			talkMsg.setType(1);
//			talkMsg.setMsg(msg);
//			talkMsg.setTarget_type(1);
//			talkMsg.setFrom(fromUserId);
//			talkMsg.setTarget(toUserId);
//
//			Map<String, Object> ext = new HashMap<String, Object>();
//			ext.put("senderUserId", fromUserId);
//			ext.put("senderName", fromUserNickname);
//			ext.put("senderAvatar", fromUserAvatar);
//
//			if(ext != null && !ext.isEmpty()){
//				talkMsg.setExt(ext);
//			}
//
//			TalkNode talkNode = service.messageSave(talkMsg);
//			if(talkNode.getStatusCode()==200){
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//	/**
//	 * 向用户发送通知信息
//	 *
//	 * @param msg 通知消息
//	 * @param fromUserId 发送用户ID
//	 * @param toUserId 接收用户ID
//	 * @param action 动作（支持int,boolen,String）,在接收端用来做判断
//	 * @param ext 附加属性
//	 * @return
//	 */
//	public static boolean sendCmdMsgToUser(String fromUserId, String[] toUserId,String action, Map<String, Object> ext){
//		try {
//			init();
//			TalkMsg talkMsg = new TalkMsg();
//			talkMsg.setType(5);
//			talkMsg.setTarget_type(1);
//			talkMsg.setFrom(fromUserId);
//			talkMsg.setTarget(toUserId);
//			talkMsg.setAction(action);
//
//			if(ext != null && !ext.isEmpty()){
//				talkMsg.setExt(ext);
//			}
//
//			TalkNode talkNode = service.messageSave(talkMsg);
//			if(talkNode.getStatusCode()==200){
//				return true;
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return false;
//	}
//
//
//	/**
//	 * 获取用户所在的群组列表(包括自己创建和加入的群组)
//	 * @param userId
//	 * @return
//	 */
//	public static Map<String,Map<String,Object>> findUserGroupList(String userId){
//		Map<String,Map<String,Object>> userGroupMap = new HashMap<String,Map<String,Object>>();
//		try {
//			init();
//			String[] ids = null;
//			TalkNode talkNode = service.userGroupList(userId);
//			if(talkNode != null){
//				List<TalkGroup> talkGroups = talkNode.getData_group_list();
//				if(talkGroups != null && !talkGroups.isEmpty()){
//					ids = new String[talkGroups.size()];
//					for(int i = 0;i < talkGroups.size(); i++){
//						ids[i] = talkGroups.get(i).getGroupid();
//					}
//				}
//			}
//
//
//			if(!StringUtil.isEmpty(ids)){
//				talkNode = service.groupGet(ids);
//				if(talkNode != null){
//					List<TalkGroupNew> newGroups = talkNode.getData_group_list_new();
//					if(newGroups != null && !newGroups.isEmpty()){
//						for(TalkGroupNew talkGroup : newGroups){
//							Map<String,Object> map = new HashMap<String, Object>();
//							map.put("groupName", talkGroup.getName());
//							map.put("groupUserNum", talkGroup.getAffiliations_count());
//							userGroupMap.put(talkGroup.getId(), map);
//						}
//					}
//				}
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return userGroupMap;
//	}
//
//	/**
//	 * 获取群组列表
//	 *
//	 * @param id 群组编号
//	 * @return
//	 */
//	public static Map<String,Map<String,Object>> findGroupList(String[] id){
//		Map<String,Map<String,Object>> userGroupMap = new HashMap<String,Map<String,Object>>();
//		try {
//			init();
//			TalkNode talkNode = service.groupGet(id);
//			if(talkNode != null){
//				List<TalkGroupNew> talkGroups = talkNode.getData_group_list_new();
//				if(talkGroups != null && !talkGroups.isEmpty()){
//					for(TalkGroupNew talkGroup : talkGroups){
//						Map<String,Object> map = new HashMap<String, Object>();
//						map.put("groupName", talkGroup.getName());
//						map.put("groupUserNum", talkGroup.getAffiliations_count());
//						userGroupMap.put(talkGroup.getId(), map);
//					}
//				}
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return userGroupMap;
//	}
//
//	/**
//	 * 获取群组好友
//	 *
//	 * @param id 群组编号
//	 * @return
//	 */
//	public static Map<String,String> findGroupFriendList(String id){
//		Map<String,String> userGroupList = new HashMap<String, String>();
//		try {
//			init();
//			TalkNode talkNode = service.groupFriendList(id);
//			if(talkNode != null){
//				List<TalkGroupMember> talkGroups = talkNode.getData_group_list_member();
//				if(talkGroups != null && !talkGroups.isEmpty()){
//					for(TalkGroupMember groupMember : talkGroups){
//						if(!StringUtil.isEmpty(groupMember.getOwner())){
//							userGroupList.put(groupMember.getOwner(), "owner");
//						}else{
//							userGroupList.put(groupMember.getMember(), "user");
//						}
//					}
//				}
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return userGroupList;
//	}
//}
